package cmdb

import (
	"github.com/gin-gonic/gin"
	"k8s-platform/model"
	"k8s-platform/service/cmdb"
	"net/http"
)

var HostServer hostserver

type hostserver struct{}

// 新增
//func (*hostserver) Add(c *gin.Context) {
//	p := &model.HostServer{}
//	p2 := int64(0)
//
//	if err := c.ShouldBindJSON(p); err != nil {
//		c.JSON(http.StatusOK, gin.H{
//			"code": 90400,
//			"msg":  err.Error(),
//			"data": nil,
//		})
//		return
//	}
//	if err := cmdb.HostServer.Add(p, p2); err != nil {
//		c.JSON(http.StatusOK, gin.H{
//			"code": 90500,
//			"msg":  err.Error(),
//			"data": nil,
//		})
//		return
//	}
//	c.JSON(http.StatusOK, gin.H{
//		"code": 0,
//		"msg":  "创建hostserver组成功",
//		"data": nil,
//	})
//}

// 查看列表
func (*hostserver) List(c *gin.Context) {
	data, err := cmdb.HostServer.List()
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90500,
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg":  "查询列表成功",
		"data": data,
	})
}

// 查看group组详情
func (*hostserver) GetDetail(c *gin.Context) {
	p := new(struct {
		ID int64 `form:"id"`
	})
	if err := c.Bind(p); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90400,
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}
	data, _, err := cmdb.HostServer.Get(p.ID)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90500,
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg":  "查询HostServer组详情成功",
		"data": data,
	})
}

// 更新group组
type UpdateRequest struct {
	HostServer    *model.HostServer
	ID            int64 `form:"id"`
	UpdateGroupID int64 `form:"updategroupID"`
	CredentialID  int64 `form:"credentialID"`
}

func (*hostserver) Update(c *gin.Context) {
	var tempData UpdateRequest
	if err := c.ShouldBindJSON(&tempData); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90401,
			"msg":  err.Error(),
			"data": tempData,
		})
		return
	}
	tempData.HostServer = &model.HostServer{}
	tempData.HostServer.ID = tempData.ID
	if err := cmdb.HostServer.Update(tempData.HostServer, tempData.UpdateGroupID, tempData.CredentialID); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90500,
			"msg":  err.Error(),
			"data": tempData,
		})
		return
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg":  "更新hostgroup组成功",
		"data": tempData,
	})
}

// 删除
func (*hostserver) Delete(c *gin.Context) {
	p := &model.HostServer{}
	if err := c.ShouldBindJSON(p); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90400,
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}
	if err := cmdb.HostServer.Delete(p, p.ID); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 90500,
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}
	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg":  "删除HostServer组成功",
		"data": nil,
	})
}
